专利摘要:
自然言語アサーション(NLA)を処理する方法を提供する。自然言語アサーション(NLA)を処理するための方法は、NLAを識別し、そのNLAを自然言語パーサ(NLP)及び合成手法を用いて検証言語アサーション(VLA)に変換することを含む。このVLAをVLAパーサ及びパターンマッチング手法を用いて解釈NLA(NLA*)に変換する。この時点で、プロセスは前記NLA*と前記NLAのユーザ評価を行う。ユーザが前記NLA*と前記NLAが同一である又は重要ではない差違を有すると判断した場合、前記VLAを用いて検証を実施する。前記検証の結果を前記NLAにバックアノテートする。完全に自動化された一実施形態では、NLAとNLA*との比較に加えて、VLAとVLA*とを比較し、それによって検証中にユーザに対して更に別の正確さの試験を提供する。
公开号:JP2011511990A
申请号:JP2010546153
申请日:2009-09-01
公开日:2011-04-14
发明作者:ダーゲラス、アラン・エム
申请人:シノプシイス インコーポレイテッド;
IPC主号:G06F17-50
专利说明:

[0001] 本発明は、自然言語アサーションに関し、具体的には、自然言語アサーションの解析、前記自然言語アサーションの検証言語アサーションへの変換、及び前記検証言語アサーションからの解釈された自然言語アサーションの生成を自動的に行うことができるプロセス/プロセッサを提供し、それによって検証中に有意義なユーザ評価ができるようにした。]
背景技術

[0002] 集積回路(IC)の設計が益々複雑になっているため、その設計をより高速に検証することに関する要望が高まっている。残念なことに、設計の飛躍的な進歩によってもたらされる設計の複雑さは、検証プロセスの改善ペースを大幅に上回っている。この差は、一つには異なる言語が用いられているということで説明することができる。特に、VerilogやVHDLなどのIC設計用のハードウェア記述言語(HDL)は、電子システムの空間的構造及び時間的構造並びに電子システムの挙動を標準的なテキストベースで表現している。そのため、HDLは、設計者に良く理解され且つ受け入れられている。対照的に、System Verilog、VERA、又はE!などの検証言語は、HDLよりも高いレベルの形式を有しているため、結果としてHDLよりもはるかに少ないユーザにしか受け入れられていない。]
[0003] ソフトウェアプログラミングにおいて用いられているアサーションと呼ばれる或る表現は、検証言語の形式化に寄与することができる。或るアサーションは、誤りがある場合にエラーを表示する表現である。HDL設計のコンテキストでは、アサーションは特定の挙動を調べ、その特定の挙動が発生した場合にメッセージを表示することができる。アサーションは、「良い」及び「悪い」挙動の両方をモニタすることができる。HDLの標準的なテキストベースの表現とは異なり、アサーションは設計者特有の表現になりやすい。つまり、或るユーザは、他人が書いたアサーションを容易に読むことができない。従って、そのアサーションの書き手以外のユーザは、検証において「失敗した」という状態を有するアサーションを無視することがよくある。]
[0004] アサーションは、検証における設計の制御可能性及び識別可能性を高めるのに好都合である。]
発明が解決しようとする課題

[0005] 従って、アサーションの読みやすさを向上させ、アサーションのより一層の使用を促すようなプロセスが求められている。]
課題を解決するための手段

[0006] 自然言語アサーション(NLA)を処理する方法は、NLAを識別し、次に前記NLAを自然言語パーサ(NLP)及び合成手法を用いて検証言語アサーション(VLA)に変換することを含む。前記VLAは、VLAパーサ及びパターンマッチング手法を用いて解釈NLA(NLA*)に変換することができる。この時点で、プロセスは前記NLA*及び前記NLAのユーザ評価を可能にする。ユーザが前記NLA*と前記NLAとが同一である又は重要ではない差違を有していると判断した場合、前記VLAを用いて検証を実施することができる。その後、前記検証の結果を前記NLAにバックアノテートすることができる。]
[0007] 一実施形態では、各識別されたNLAは、キャッシュ内の一連のNLAと比較することができる。或るNLAが、前記一連のNLAの内の1つのNLAと一致した場合、プロセスは、検証の実施に直接進む。この場合、前記検証は、キャッシュ内に保存され且つ前記一致したNLAと関連付けられたVLAを用いて実施する。前記NLAが前記1つのNLAと一致しない場合、プロセスは変換ステップに進む。]
[0008] 自然言語アサーション(NLA)を処理する完全に自動化された別の方法は、NLAを識別し、次に前記NLAを自然言語パーサ(NLP)及び合成手法を用いて検証言語アサーション(VLA)に変換することを含み得る。前記VLAは、VLAパーサ及びパターンマッチング手法を用いて解釈NLA(NLA*)に変換することができる。この時点で、前記NLA*は、解釈VLA(VLA*)に変換することができる。前記VLAと前記VLA*とを比較することができる。前記VLAと前記VLA*とが異なっている場合、前記方法は警告を発生する。前記VLAと前記VLA*とが同一である場合、前記VLAを用いて検証を実施することができる。従って、この実施形態では、前記NLAと前記NLA*とを比較することに加えて、前記VLAと前記VLA*とを比較することができるので、それによって、検証中に、ユーザに対して精度に関する更に別の試験を提供する。]
[0009] NLAパーサは、NLAプロセッサの一部を形成しており、各文章毎に自然言語のセマンティックツリーを生成するのに好都合である。NLAプロセッサは、その後、前記ツリーを使用してVLAを生成することができる。VLAを生成するためにNLAプロセッサで用いられる例示的な手法には、例えば、テキストの変換、テキストの維持、及び表現のマッチングなどが含まれる。テキストの変換は、散文を数値変換すること(例えば、「zero」→0、「one」→1)及び短縮形式にすること(例えば、「should not」→shouldn't)を含み得る。テキストの維持は、二重引用符を用いて識別することができる。例えば、NLAにおける‘‘a+b’’という表現は、その状態のままでVLAに移すことができる。同様に、変数名が英単語の場合、前記変数名を二重引用符の中に配置することによって明確にすることができる(例えば、NLAは、‘‘a’’が発生した場合、次に・・・と記述し得る)。表現のマッチングは、複数の用語がピリオドによって境界を示されている場合、それら複数の用語を調べる。例えば、アサーションの1つの形式は「コンカレントアサーション」であり、(クロッキングシーケンス)(前提)→(結果)であり得る。このようなアサーションは、対応するNLA形式を有し得る(例えば、「クロックclkのポジティブエッジで、‘‘a’’が発生した場合、nのクロックサイクル後に‘‘b’’を行う」)。この場合、前記NLAにおけるコンカレントアサーションの3つの別個の部分をマッチングすることは、パターンマッチング問題である。アサーションの別の形式は、変形補完である(例えば、「is not high」→low)。]
[0010] 一実施形態では、(NLAプロセッサで実施される)識別ステップ及び変換ステップはそれぞれ、複数のアサーションを処理し得る。この実施形態では、NLAプロセッサは、それらのアサーションの処理を並行して行うための複数のプロセッサを含み得る。]
[0011] NLAを処理するためのシステムは、NLAプロセッサ、並びに一連のシミュレータ及び検証ツールを含み得る。前記NLAプロセッサは、集積回路(IC)の記述と関連付けられた複数のNLAを受信し、前記複数のNLAを複数の検証言語アサーション(VLA)に変換し得る。前記一連のシミュレータ及び検証ツールは、前記複数のVLA及び前記ICの記述を受信し、VLAの失敗を示すレポートを作成し得る。]
図面の簡単な説明

[0012] 例示的なNLA処理手法を示す図である。
自動検証を含む別の例示的なNLA処理手法を示す図である。
RTL識別子、RTL入力/出力コード、埋め込まれたNLA、及びエンドモジュール指定子を含む例示的なコントローラRTLコードを示す図である。
本発明に係る原NLAから生成されたVLA及び解釈NLAの例示的なコード化を示す図である。
本発明に係る原NLAから生成されたVLA及び解釈NLAの例示的なコード化を示す図である。
本発明に係る原NLAから生成されたVLA及び解釈NLAの例示的なコード化を示す図である。
本発明に係る原NLAから生成されたVLA及び解釈NLAの例示的なコード化を示す図である。
NLAに基づいてNLPによって出力された例示的なセマンティックツリーを示す図である。
NLA処理手法を含む例示的なデジタルASIC設計フローの簡略表現を示す図である。
論理設計及び機能検証を実装可能なシステムを簡略化して示す図である。
論理設計及び機能検証を実装可能なシステムを簡略化して示す図である。]
実施例

[0013] アサーションは、検証におけるIC設計の制御可能性及び識別可能性を高めるのに好都合である。残念なことに、別の書き手によって書かれたアサーションを解釈することが困難であるため、検証においてアサーションを使用することが妨げられている。本発明の一側面によれば、プロセス及び/又はプロセッサは、設計挙動の分かりやすい英語表現(本明細書中では、自然言語アサーション(NLA)と呼ぶ)を、検証言語アサーション(VLA)に自動的に変換することができる。このVLAを、解釈NLAに変換して戻すことができ、それによって原NLAと解釈NLAとの間の有意義なユーザ評価を容易に行えるようにする。前記評価が、前記原NLAと前記解釈NLAとの間に実質的に差違が存在しないことを示す場合、前記VLAを用いて設計の検証を実施することができる。次に、この検証の結果を原NLAにバックアノテートすることができる。]
[0014] NLAとVLAとの区別を明確にするために、トラフィックコントローラの設計が助けになり得る。例示的なトラフィックコントローラでは、適切な作動のために少なくとも5つのNLAを表現することができる。
(1)緑色又は黄色の光が示されている場合、クロスストリート(cross street)を赤色の光にしなければならない。
(2)光は、一般的な(従来通りの)緑色、黄色、赤色の順序で変化しなければならない。
(3)トラフィックが赤色の光で待機しているときに、クロスストリート上にトラフィックがない場合はトラフィックに緑色の光を割り当てなければならない。
(4)クロスストリートにトラフィックが存在している場合でも、トラフィックは赤色の光で5ティックを超えて待機してはならない。
(5)センサがトラフィックを示している場合、緑色の光が現れるまで(赤色の光がない状態)、センサをリセットしない。]
[0015] 前記5つのNLAに対応する一連のVLAを以下に示す(NLAも示しているが、参照しやすくするためにNLAはイタリック体で示す(下線を付す))。VLAで表現されるクロスストリートは、メインストリート(Main Street)及び第1ストリート(First Street)であることを留意されたい。]
[0016] ]
[0017] //1) 緑色又は黄色の光が示されている場合、クロスストリートを
//赤色の光にしなければならない。]
[0018] ]
[0019] //2) 光は、一般的な緑色、黄色、赤色の順序で
//変化しなければならない。]
[0020] ]
[0021] //3)トラフィックが赤色の光で待機しているときに、
//クロスストリート上にトラフィックがない場合は緑色の光を割り当てなければならない。]
[0022] ]
[0023] //4)クロスストリートにトラフィックが存在している場合でも、
//トラフィックは赤色の光で5ティックを超えて待機してはならない。]
[0024] ]
[0025] //5)センサがトラフィックを示している場合、緑色の光が現れるまで(赤色の光がない状態)、センサをリセットしない。]
[0026] ]
[0027] 前述の単純な設計のトラフィックコントローラのためのNLAと対応するVLAとを比較すると、ますます複雑になっているIC設計のVLAを理解することの難しさが明らかになる。しかし、これらのIC設計のVLAは、検証中に用いることができる組み合わせ論理方程式及び時相論理方程式の両者の数学的表現として必要である。]
[0028] 従って、NLAをVLAに自動的に変換できるプロセス及び/又はプロセッサが非常に望ましい。更に、そのVLAを変換して解釈NLAに戻すプロセス及び/又はプロセッサは、ユーザに原NLAの有意義な評価を行わせるのに好都合であり、それによって前記VLAのエラー検出をしやすくする。これらの変換を、図1を参照して以下に説明する。] 図1
[0029] 図1は、例示的なNLA処理手法100を示す。ステップ101では、NLAを周知の合成手法を用いて識別する。例えば、一実施形態では、この識別ステップは、モジュール/ファイル内のNLAを検索するUnix(登録商標)コマンドを用いて実施することができる。ステップ101は、RTLからNLAを抽出するなどの他の合成手法を更に含むことができ、自然言語の文のみで更なる処理が実施されるようにする。識別された及び抽出されたNLAを、更なる処理のためにキャッシュにコピーすることができる。識別されたNLAに関する情報(例えば、ファイル名、モジュール名、及びライン番号)は、キャッシュ内のNLAと関連付けることができる。一実施形態では、各NLAは文章の末尾にピリオドを有し、ダウンストリーム処理がNLAの末尾を明確に指定できるようにする。] 図1
[0030] この時点で、ステップ102では、NLAを自然言語パーサ(NLP)を用いてVLAに変換する。例示的なNLPは、インターネット用の新世代検索エンジンとして現在開発中のスタンフォードパーサ(Stanford Parser)(例えば、バージョン1.4)である。NLP(例えば、スタンフォードパーサ)の仕組みに関する背景情報は、例えば、Dan Klein及びChristopher D. Manningによる「Fast Exact Inference with a Factored Model for Natural Language Parsing」(Advances in Neural Information Processing Systems 15 (NIPS 2002), Cambridge, MA:MIT Press, pp. 3-10 (2003))、並びにDan Klein及びChristopher D. Manningによる「Accurate Unlexicalized Parsing」(Proceedings of the 41st Meeting of the Association for Computational Linguistics, pp. 423-430 (2003))に記載されている。]
[0031] ステップ102で用いられるNLPは、セマンティックツリーを作成し得るインテリジェントクエリツールを用いて実装することができる。NLPは、確率的構文解析を用いることができ、その場合、セマンティックツリー上で動作する動的プログラミングアルゴリズムに基づいて、所与の文の最も適当な構文解析を計算することができる。適切な構文解析のために、NLPのモデルは、特定の言語(例えば、英語、中国語、アラビア語、及びドイツ語)毎に開発することができることは明らかである。]
[0032] VLAを生成するためにNLAプロセッサで用いられる例示的な手法には、例えば、テキストの変換、テキストの維持、及び表現のマッチングなどが含まれる。テキストの変換は、散文を数値変換すること(例えば、「zero」→0、「one」→1)及び短縮形式にすること(例えば、「should not」→shouldn't)を含み得る。テキストの維持は、二重引用符を用いて識別することができる。例えば、NLAにおける‘‘a+b’’という表現は、その状態のままでVLAに移すことができる。同様に、変数名が英単語の場合、前記変数名を二重引用符の中に配置することによって明確にすることができる(例えば、NLAは、‘‘a’’が発生した場合、次に・・・と記述し得る)。表現のマッチングは、複数の用語がピリオドによって境界を示されている場合、それら複数の用語を調べる。例えば、アサーションの1つの形式は「コンカレントアサーション」であり、(クロッキングシーケンス)(前提)→(結果)であり得る。このようなアサーションは、対応するNLA形式を有し得る(例えば、「クロックclkのポジティブエッジで、‘‘a’’が発生した場合、nのクロックサイクル後に‘‘b’’を行う」)。この場合、前記NLAにおけるコンカレントアサーションの3つの別個の部分をマッチングすることは、パターンマッチング問題である。アサーションの別の形式は、変形補完である(例えば、「is not high」→low)。]
[0033] 一実施形態では、NLAにおける二重引用符内の用語は、トークンと置換することができる。前記トークンは、ALIAS01、ALIAS02...などの固有の識別子であり、その識別子は、入力解析中に名詞としてNLPで処理することができ、また名詞プロパティがタグ付けされたNLPのセマンティックツリー出力において示すことができる。前記原用語による前記名詞の単純な置換は、NLP処理を受ける前記用語が保たれることを保証する。例えば、‘‘A’’は、第1信号などのトークンと置換することができる。この置換は、NLAプロセッサによって自動的に行うことができる、或いはユーザが提案する名前で補完することができる。従って、自然言語パーサへの入力は、特定の自然言語(例えば、英語)要素として十分に理解可能である。]
[0034] 多数のNLAを変換することは、CPU時間に対してリソース集約的であり得ることを留意されたい。従って、一実施形態では、NLPは、変換を並列処理できる複数のプロセッサを含み得る。例えば、NLPが5つのプロセッサを備えていて、1000のNLAが存在する場合、それらのNLAをVLAに変換するために各プロセッサには200のNLAが提供され得る。これらの変換は非同期的に行うことができ、それによって処理時間を最小限にする。全ての変換が実施された後、NLPのコントローラは、セマンティックツリーを作成するべく様々なプロセッサからの結果を順序付ける。]
[0035] 各セマンティックツリーは、自然言語の文を言語使用グループ(例えば、名詞、動詞、形容詞、副詞など)に分解することを留意されたい。一実施形態では、セマンティックツリーは、複数のリストからなる1つのリストから構成することができる。各原子リストは、タップル(2項目)(属性値)である。例えば、(NNrain)は、名詞「rain」を表す。]
[0036] 例示的な英文とそのセマンティックツリーを以下に記述する。]
[0037] ]
[0038] セマンティックツリー]
[0039] ]
[0040] 一実施形態では、各言語グループは、VLA生成器で読み取ることができる特定の記述子を有し得る。このVLA生成器は、NLAからVLAを作成するためにセマンティックツリーのコンテキストにおける言語グループを使用し得る。一実施形態では、VLA生成器はセマンティックツリーを通って、全てのノードを訪れる。VLA生成器は、訪れたノード、認識したパターン、並びに現在のノード及び現在の経路に関するツリーにおける現在の状態を追跡記録し続けることができる。部分的な表現が一致し、最終的に、「コンカレントアサーション」のような完全なアサーション構造が認識された場合(各下位部分が一致を検出)、SVAへの変換が実施される。]
[0041] ステップ103では、VLAを、VLAパーサ及びパターンマッチング手法を用いて解釈NLA(NLA*)に変換して戻す。ステップ104では、ユーザは、NLA及びVLAから再生されたNLA*を評価する。ステップ105では、VLAの検証を実施する。一実施形態では、この検証は、シミュレーションと形式チェックを含み得る。ステップ106では、検証の結果より、どれが失敗し、どれが成功したかを識別する。一実施形態では、シミュレータ及び/又は形式検証ツールは、例えば、アサーションのファイル及びライン番号のほか、失敗したもののシミュレーション時間などの詳細を含むエラーメッセージによって失敗アサーションを識別することができる。検証の結果をNLAにバックアノテートすることができる。]
[0042] 一実施形態では、各ステップは、複数のアサーションを処理することができる。つまり、ステップ101では、モジュール/ファイルの複数のNLAを識別する。ステップ102では、それらの識別されたNLAを複数のVLAに変換する。次に、ステップ103では、複数のVLAを、複数の解釈されたNLAに変換して戻すことができる。この実施形態では、NLAはモジュールレベル或いはファイルレベルのどちらかで処理することができることを留意されたい。]
[0043] 一実施形態において速度向上能力を提供するために、ステップ110では、新規に識別されたNLAを、キャッシュ内に保存されている既に変換に成功したNLAのグループと比較することができる。つまり、或るNLAが既に処理されている場合、その処理の結果を再利用することができるので、手法はステップ105に直接進むことができ、それによって全体の処理を最小限にする。前記NLAがまだ処理されていない場合、手法は前述のステップ102に進む。]
[0044] 特に、キャッシュは、任意の階層レベル(例えば、設計毎、ユーザ毎、又は会社毎)で構成することができる。一実施形態では、キャッシュは、NLA、そのセマンティックツリー、及びそのVLAを含み得る。セマンティックツリー及びVLAが、その対応するNLAを参照することによって、前記NLAが後で設計から削除された場合に前記セマンティックツリー及び前記VLAも容易に削除することができ、それによってキャッシュのスペース及びシミュレータの使用を最小限にすることを留意されたい。]
[0045] ステップ101の一実施形態では、NLAは、ICのRTL(レジスタ転送レベル)記述の中に含まれ得ることを留意されたい。IC設計分野の当業者には周知のように、RTL記述は、レジスタ及び組み合わせ論理を含む同期回路のためのものである。レジスタ転送レベルの抽象化は、通常はICの高水準表現を作成するためにHDLで用いられる。NLAがRTL記述の中に含まれている場合、そのNLAはコメントとしてRTLエントリの後に続く。例えば、そのコメントはNLAとして明確に識別することができ、前のRTL記述において参照された信号名を使用するので、それによってNLAをそのRTL記述と関連付ける。]
[0046] ステップ101の別の実施形態では、NLAは標準的なワードプロセッシングドキュメント内に含まれ得る。この実施形態は、ICのRTL記述が得られる前であっても使用することができる。この実施形態では、RTL記述が得られた後、そのRTL記述において用いられた特定の信号を再び使用して、各NLAを特定のRTL記述と関連付けている文書に追加パラグラフを追加することができる。この種類のNLAの実装は、任意のテストベンチに適合可能な一般的な文書を提供するのに好都合であり得る。つまり、異なるテストベンチが使用された結果として信号名が変化した場合、関連付けパラグラフのみ変更を必要とする。]
[0047] 図2は、自動検証を含む別の例示的なNLA処理手法200を示す。手法200のステップ201では、NLAを識別する。この時点で、ステップ202では、前記NLAをNLP及び合成手法を用いてVLAに変換する。ステップ203では、前記VLAを、VLAパーサ及びパターンマッチング手法を用いてNLA*に変換して戻すことができる。ステップ204では、前記NLA*をVLA*に変換する。ステップ205では、前記VLAと前記VLA*とを比較する。ステップ206における判断結果として、前記VLAと前記VLA*とが異なっている場合、ステップ207では、ユーザに対して警告を発生する。一方、前記VLAと前記VLA*とが異なっていない(即ち、同じ)場合、ステップ208では、前記VLAの検証を実施する。一実施形態では、この検証は、シミュレーション及び形式チェックを含み得る。ステップ209では、前記検証の結果(即ち、どれが失敗し、どれが成功したかの識別)を前記NLAにバックアノテートする。一実施形態では、各ステップは、複数のアサーションを処理し得ることを理解されたい(図1の説明を参照)。] 図1 図2
[0048] 一実施形態において速度向上能力を提供するために、ステップ210では、新規に識別されたNLAを、キャッシュに保存されている既に変換に成功したNLAのグループと比較することができる。つまり、或るNLAが既に処理されている場合、その処理の結果を再利用することができるので、手法はステップ208に直接進むことができ、それによって全体の処理を最小限にする。NLAがまだ処理されていない場合、手法は、前述のステップ202に進む。]
[0049] 図3Aは、RTL識別子301(コントローラのためのモジュールを識別する)、RTL入力/出力コード302、埋め込まれたNLA303(この場合、4つのNLA)、及びエンドモジュール指定子304を含む例示的なコントローラRTLコード300を示す。図3B〜3Eはそれぞれ、本発明に係る原NLAから生成されたVLA及び解釈NLAの例示的なコーディングを示す。各コーディングの例は、NLA識別子310(この場合、モジュールのライン番号を示す)、原NLA(ORIG)311、解釈NLA(即ち、NLA*)(INTERP)312、NLA*から生成されたVLA313(第1ラインがラベル付けされている)、並びに、NLA、NLA*、及びVLAを関連付ける関連付け節314を含む。関連付け節314は、VLAをモジュールの特定のライン番号(例えば、この場合はライン175)と関連付けることを留意されたい(モジュール内の各NLAは理論上は複数のラインを用いて表現することができるため、NLAモジュールの第1ラインのみを参照することができることを留意されたい)。] 図3A 図3B 図3C 図3D 図3E
[0050] 解釈NLA(NLA*)は、原NLAに対する解釈を反映し得ることを留意されたい。例えば、図3Cを参照して、原NLAは、「clk[1つのクロック]のポジティブエッジで、もしce0_N[クロックは0を有効にする]又はce1_N[クロックは1を有効にする]又はce2_N[クロックは2を有効にする]又はce3_N[クロックは3を有効にする]が立ち上がる場合」と記述する一方で、解釈NLAは、「clkのポジティブエッジで、もしce0_Nが立ち上がる又はce1_Nが立ち上がる又はce2_Nが立ち上がる又はce3_Nが立ち上がる場合」と記述する。従って、この変換では、NLAプロセッサは、立ち上がるということを各信号に対して効果的に展開し、それによって作動条件を明確にする。別の実施形態では、図3Eを参照して、原NLAは、「次に、b_ce_idleが少なくとも1サイクルの間はハイの状態を保ち、続いて1サイクル後にadxStrbがハイの状態になる」と記述する一方で、解釈NLAは、「次に、b_ce_idleが少なくとも1clkサイクルの間はハイの状態を保ち、続いてclkサイクル1においてadxStrbがハイの状態でなければならない」と記述する。従って、この変換では、NLAプロセッサは、「サイクル」を「clk[クロック]サイクル」に変換し、それによってその用語を明確にし、更に、各時間的アサーション毎に1つのサンプリングのみ行うことができることを明確にする、即ち、前述の「if−then(もし−次に)」節は、クロックサイクル1の間のみに適用可能である。図3Fは、NLAに基づいてNLPによって出力されたIC設計の或る部分の例示的なセマンティックツリー出力320を示す。] 図3C 図3E 図3F
[0051] 図4は、NLA処理手法を含む例示的なデジタルASIC設計フローを簡略化して説明するための図である。上側の段において、プロセスは製品企画(ステップ400)より開始し、EDAソフトウェア設計プロセスを実行する(ステップ410)。設計が終了すると、テープアウトを行う(イベント440)。テープアウト後、製造プロセス(ステップ450)、パッケージング及び組立プロセス(ステップ460)を実施し、最終的に、完成品チップが得られる(結果470)。] 図4
[0052] EDAソフトウェア設計プロセス(ステップ410)は、実際には複数のステップ412〜430から構成されており、簡略化のために直線的に示している。実際のASIC設計プロセスでは、特定の設計は、所定の試験に合格するまでステップを逆戻りしなければならないこともある。同様に、実際の設計プロセスでは、これらのステップは、異なる順序及び組み合わせで行われることがある。従って、この説明は、特定のASICのための具体的な或いは推奨する設計フローとしてよりも、むしろ背景説明(context)及び一般的な説明のために提供される。]
[0053] ここで、EDAソフトウェア設計プロセス(ステップ410)を構成するステップを簡単に説明する。]
[0054] システム設計(ステップ412):設計者は、実装したい機能性を記述し、what−ifプランニングを実施して機能性改良や費用確認などを行うことができる。
ハードウェア−ソフトウェア・アーキテクチャ・パーティショニングは、このステップで行うことができる。このステップで使用することができるシノプシス社(Synopsys, Inc.)製の例示的なEDAソフトウェア製品には、Model Architect、Saber、System Studio、及びDesignWare(登録商標)などの製品が含まれる。]
[0055] 論理設計及び機能性の検証(ステップ414):このステップでは、システム内のモジュールのためのVHDLまたはVerilogコードを書き込み、その設計を機能性の精度について検査する。より具体的には、設計を検査することによって、正しい出力を生成することを保証する。このステップで使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、VCS、VERA、DesignWare(登録商標)、Magellan、Formality、ESP、及びLEDAなどの製品が含まれる。一実施形態では、前述のNLA処理手法は、任意のシミュレーション及び検証ツールのセット、例えば、VCS(シミュレーション)及びMagellan(検証)に含まれ得る。]
[0056] 合成及び試験のための設計(ステップ416):このステップでは、VHDL/Verilogをネットリストに変換する。ネットリストは、目的の技術のために最適化することができる。加えて、完成品チップの検査を可能とする試験の設計及び実装を行う。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Design Compiler(登録商標)、Power Compiler、Tetramax、及びDesignWare(登録商標)などの製品が含まれる。]
[0057] ネットリスト検証(ステップ418):このステップでは、ネットリストを、タイミング制約との適合性及びVHDL/Verilogソフトウェア製品との対応性について検査する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Formality、PrimeTime、及びVCSなどの製品が含まれる。]
[0058] 設計プランニング(ステップ420):このステップでは、チップの全体フロアプランを作成し、タイミング及び最上位ルーティングについて解析する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Astro及びIC Compilerなどの製品が含まれる。]
[0059] 物理的な実装(ステップ422):このステップでは、配置(回路素子の位置決め)及びルーティング(回路素子の接続)を行う。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Astro及びIC Compilerなどの製品が含まれる。]
[0060] 解析及び抽出(ステップ424):このステップでは、回路機能をトランジスタレベルで検証し、これによりwhat−if解析による改良を可能にする。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、AstroRail、Primetime、及びStar RC/XTなどの製品が含まれる。]
[0061] 物理的な検証(ステップ426):このステップでは、様々なチェック機能を実行し、製造、電気的な結果、リソグラフィックの結果、及び回路構成について正確性を保証する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Herculesなどの製品が含まれる。]
[0062] 分解能向上(ステップ428):このステップでは、レイアウトの幾何学的操作を行い、設計の製造可能性を改善する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、Proteus、ProteusAF、及びPSMGenなどの製品が含まれる。]
[0063] マスクデータ準備(ステップ430):このステップでは、完成品チップを作成するのに使用するリソグラフィーのために、マスク作成用の「テープアウト」データを提供する。このステップにおいて使用することができるシノプシス社製の例示的なEDAソフトウェア製品には、CATS(登録商標)シリーズの製品が含まれる。]
[0064] 図5Aは、前述の論理設計及び機能検証(ステップ414)を実装し得るシステム500を簡略化して示す。システム500では、NLAプロセッサ502は、入力501Aとして、ICのRTL記述及び該RTL記述に埋め込まれたその対応するNLAを受信する。入力501のNLA部分を用いて(及びRTL部分は無視して)、NLAプロセッサ502は、対応するVLA503を生成する。シミュレータ及び検証ツール504は、VLA503及び入力501を受信し(この場合、NLAはコメントであるため、入力501のRTL部分のみがツール504で実際に読み出される)、1つ或いは複数のレポート505を生成する。一実施形態では、レポート505は、RTL記述のコンテキストにおいて失敗に終わったVLAを識別する。] 図5A
[0065] この時点で、NLAプロセッサ502は、その失敗VLAを解釈NLAに変換して戻し、比較506を生成するのに好都合であり、それによってユーザが原NLAと解釈NLAとを比較して、エラーを調べられるようにする。別の実施形態では、NLAプロセッサ502は、全てのVLAを解釈NLAに変換し、比較506を生成し得る。比較506の結果として、NLAプロセッサ502は、入力501AのNLA部分にバックアノテートすることができる。]
[0066] 図5Bに示す別の実施形態では、NLAが埋め込まれたRTL記述501Aは、RTLのみの記述501Bと置換することができる。この場合、システム510は、一般的なNLA(gNLA)及び関連付けパラグラフ(BP)(即ち、入力507)並びにRTLのみの記述501BをNLAプロセッサ502に提供する。入力507を用いて、NLAプロセッサ502は、対応するVLA503を生成する。NLAプロセッサ502は、RTL501Bも受信し、IC設計のポート/変数を識別し且つNLAが前記設計内に存在する対象を参照していることを調査する。シミュレータ及び検証ツール504は、VLA503及びRTLのみの記述501Bを受信し、1つ或いは複数のレポート505を生成する。一実施形態では、レポート505は、RTL記述のコンテキストにおいて失敗に終わったVLAを識別し得る。] 図5B
[0067] この時点で、NLAプロセッサ502は、そのVLAを解釈NLAに変換して戻し、比較506を生成するのに好都合であり、それによってユーザが原NLAと解釈NLAとを比較して、エラーを調べられるようにする。別の実施形態では、NLAプロセッサ502は、全てのVLAを解釈NLAに変換し、比較506を生成し得る。比較506の結果として、NLAプロセッサ502は、入力507の関連付けパラグラフにバックアノテートすることができる。]
[0068] NLAのプロセス及びプロセッサについて前述の通り説明してきた。概念的には、前記プロセス/プロセッサは、2つの異なる手法を含んでいることで特徴付けることができる。第1の手法では、NLAをVLAに変換する、非アルゴリズム手法が用いられることを広範に記述した。本質的に、この手法は人工知能の一種である。第2の手法では、VLAを解釈NLAに変換する、アルゴリズム手法が用いられることを広範に記述した。つまり、VLAは根本的に数学的表現である。コードのこれらの特定の変換は、検証ツールのユーザに著しい利益を提供する、即ち、そのユーザがNLAと解釈NLAとの比較を介してVLAの有意義な評価をできるようにする。この評価は、大部分の又は全てのステップをNLAプロセッサで自動的に実行することにより、VLAのエラー訂正を容易にできるようにする。]
[0069] 本発明は、例えば、1つのデータ保存システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、且つそれらに対してデータ及び命令を送信するように接続された少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行する1つ或いは複数のコンピュータプログラムに有利に実装することができる。各コンピュータプログラムは、高次手続き型又はオブジェクト指向型プログラミング言語で、或いは所望に応じてアセンブリ言語又は機械語で実装することができる。いずれにせよ、その言語は、コンパイラ型言語又はインタープリタ型言語である。適切なプロセッサには、例えば、汎用マイクロプロセッサ及び特定用途向けマイクロプロセッサの両者のほか、他の種類のマイクロコントローラが含まれる。一般的に、プロセッサは、読み出し専用メモリ及び/又はランダムアクセスメモリから命令及びデータを受信する。一般的に、コンピュータは、データファイルの保存用として1つ或いは複数の大容量記憶装置を有しており、その大容量記憶装置には、磁気ディスク(例えば、内蔵されたハードディスク及びリムーバブルディスク)、光磁気ディスク、及び光ディスクが含まれる。コンピュータプログラム命令及びデータを具体的に実施するのに適合する記憶装置には、全ての形態の不揮発性メモリ(例えば、EPROM、EEPROMなどの半導体メモリ装置、及びフラッシュメモリ装置)、磁気ディスク(例えば、内蔵されたハードディスク及びリムーバブルディスク)、光磁気ディスク、及びCD−ROMディスクが含まれる。前述したいずれのものも、特定用途向け集積回路(ASIC)により補足することができる又はそれに組み込むことができる。]
[0070] 本発明の例示的な実施形態について添付の図面を参照して本明細書中で詳細に説明してきたが、本発明はこれらの正確な実施形態に限定されるわけではないことを理解されたい。これらの実施形態は、本発明を包括する或いは本発明をこれらと一致するものに制限することを意図しない。実施形態自体は、多数の変更及び変形ができることは明らかである。例えば、他の実施形態では、目前のタスクに完全に専用のNLPを含む異なるNLPを使用することができる。自然言語は、アサーションを記述するのみではなく、HDL又はテストベンチ言語に同様に変換することができる試験計画、カバレッジポイント、及び制約を記述するために用いることもできる。更に別の実施形態では、エンドユーザは、NLAとVLAとの間の変換の規則を明記することができる。従って、本発明の範囲は、特許請求の範囲に記載のもの及びそれらの同等物によって定義されるものとする。]
权利要求:

請求項1
自然言語アサーション(NLA)を処理する方法であって、NLAを識別するステップと、前記NLAを、自然言語パーサ(NLP)及び合成手法を用いて検証言語アサーション(VLA)に変換するステップと、前記VLAを、VLAパーサ及びパターンマッチング手法を用いて解釈NLA(NLA*)に変換するステップと、前記NLA*及び前記NLAのユーザ評価を行うステップと、前記ユーザ評価の結果に基づいて、前記VLAを用いて検証を実施するステップとを含むことを特徴とする方法。
請求項2
前記検証の結果を前記NLAにバックアノテートするステップを更に含むことを特徴とする請求項1に記載の方法。
請求項3
前記識別するステップ及び変換するステップはそれぞれ、複数のアサーションを処理することを特徴とする請求項2に記載の方法。
請求項4
前記NLAをキャッシュ内の一連のNLAと比較するステップと、前記NLAが前記一連のNLAの内の1つのNLAと一致した場合、検証を実施するステップに直接進むステップを更に含み、前記検証は、前記キャッシュ内に保存され且つ前記一致したNLAと関連付けられたVLAを用いて実施することを特徴とする請求項1に記載の方法。
請求項5
前記NLAが前記1つのNLAと一致しなかった場合、前記NLAを変換するステップに進むステップを含むことを特徴とする請求項4に記載の方法。
請求項6
自動検証を含む、自然言語アサーション(NLA)を処理する方法であって、NLAを識別するステップと、前記NLAを、自然言語パーサ(NLP)及び合成手法を用いて検証言語アサーション(VLA)に変換するステップと、前記VLAを、VLAパーサ及びパターンマッチング手法を用いて解釈NLA(NLA*)に変換するステップと、前記NLA*を解釈VLA(VLA*)に変換するステップと、前記VLAと前記VLA*とを比較するステップと、前記VLAと前記VLA*とが異なっている場合、警告を発生するステップと、前記VLAと前記VLA*とが異なっていない場合、前記VLAを用いて検証を実施するステップとを含むことを特徴とする方法。
請求項7
前記検証の結果を前記NLAにバックアノテートするステップを更に含むことを特徴とする請求項6に記載の方法。
請求項8
前記識別するステップ及び変換するステップはそれぞれ、複数のアサーションを処理することを特徴とする請求項7に記載の方法。
請求項9
前記NLAをキャッシュ内の一連のNLAと比較するステップと、前記NLAが前記一連のNLAの内の1つのNLAと一致した場合、検証を実施するステップに直接進むステップを更に含み、前記検証は、前記キャッシュ内に保存され且つ前記一致したNLAと関連付けられたVLAを用いて実施することを特徴とする請求項6に記載の方法。
請求項10
前記NLAが前記1つのNLAと一致しなかった場合、前記NLAを変換するステップに進むステップを更に含むことを特徴とする請求項9に記載の方法。
請求項11
自然言語アサーション(NLA)を処理するためのコンピュータで実行可能な命令を保存したコンピュータ可読媒体であって、NLAを識別するステップと、前記NLAを、自然言語パーサ(NLP)及び合成手法を用いて検証言語アサーション(VLA)に変換するステップと、前記VLAを、VLAパーサ及びパターンマッチング手法を用いて解釈NLA(NLA*)に変換するステップと、前記NLA*及び前記NLAのユーザ評価を行うステップと、前記ユーザ評価の結果に基づいて、前記VLAを用いて検証を実施するステップとを実行させるための命令を保存したコンピュータ可読媒体。
請求項12
前記検証の結果を前記NLAにバックアノテートするステップを更に含むことを特徴とする請求項11に記載のコンピュータ可読媒体。
請求項13
前記識別するステップ及び変換するステップはそれぞれ、複数のアサーションを処理することができることを特徴とする請求項12に記載のコンピュータ可読媒体。
請求項14
前記NLAをキャッシュ内の一連のNLAと比較するステップを更に含み、前記NLAが前記一連のNLAの内の1つのNLAと一致した場合、検証を実施するステップに直接進み、前記検証は、前記キャッシュ内に保存され且つ前記一致したNLAと関連付けられたVLAを用いて実施することを特徴とする請求項11に記載のコンピュータ可読媒体。
請求項15
前記NLAが前記1つのNLAと一致しなかった場合、前記NLAを変換するステップに進むステップを更に含むことを特徴とする請求項14に記載のコンピュータ可読媒体。
請求項16
自然言語アサーション(NLA)を処理するためのコンピュータで実行可能な命令が保存されたコンピュータ可読媒体であって、NLAを識別するステップと、前記NLAを、自然言語パーサ(NLP)及び合成手法を用いて検証言語アサーション(VLA)に変換するステップと、前記VLAを、VLAパーサ及びパターンマッチング手法を用いて解釈NLA(NLA*)に変換するステップと、前記NLA*を解釈VLA(VLA*)に変換するステップと、前記VLAと前記VLA*とを比較するステップと、前記VLAと前記VLA*とが異なっている場合、警告を発生するステップと、前記VLAと前記VLA*とが異なっていない場合、検証を実施するステップとを実行させるための命令を保存したコンピュータ可読媒体。
請求項17
前記検証の結果を前記NLAにバックアノテートするステップを更に含むことを特徴とする請求項16に記載のコンピュータ可読媒体。
請求項18
前記識別するステップ及び変換するステップはそれぞれ、複数のアサーションを処理することを特徴とする請求項17に記載のコンピュータ可読媒体。
請求項19
前記NLAをキャッシュ内の一連のNLAと比較するステップを更に含み、前記NLAが前記一連のNLAの内の1つのNLAと一致した場合、検証を実施するステップに直接進み、前記検証は、前記キャッシュ内に保存され且つ前記一致したNLAと関連付けられたVLAを用いて実施することを特徴とする請求項16に記載のコンピュータ可読媒体。
請求項20
前記NLAが前記1つのNLAと一致しなかった場合、前記NLAを変換するステップに進むステップを更に含むことを特徴とする請求項19に記載のコンピュータ可読媒体。
請求項21
自然言語アサーション(NLA)を処理するためのシステムであって、集積回路の記述と関連付けられた複数のNLAを受信し、前記複数のNLAを複数の検証言語アサーション(VLA)に変換するためのNLAプロセッサと、前記複数のVLA及び前記ICの記述を受信し、前記VLAの失敗を示すレポートを作成するための一連のシミュレータ及び検証ツールとを含むことを特徴とするシステム。
类似技术:
公开号 | 公开日 | 专利标题
US8719742B2|2014-05-06|Conversion of circuit description to an abstract model of the circuit
US8781808B2|2014-07-15|Prediction-based distributed parallel simulation method
Jyu et al.1993|Statistical timing analysis of combinational logic circuits
US5572437A|1996-11-05|Method and system for creating and verifying structural logic model of electronic design from behavioral description, including generation of logic and timing models
US10089427B2|2018-10-02|Method and apparatus for word-level netlist preprocessing and analysis using same
US5493508A|1996-02-20|Specification and design of complex digital systems
US8037428B2|2011-10-11|Method and system for post-routing lithography-hotspot correction of a layout
CN101789033B|2014-06-04|用于在物理验证期间管理违例和错误分类的方法和设备
US6173435B1|2001-01-09|Internal clock handling in synthesis script
US7685545B2|2010-03-23|Methods and devices for independent evaluation of cell integrity, changes and origin in chip design for production workflow
US7472361B2|2008-12-30|System and method for generating a plurality of models at different levels of abstraction from a single master model
Huang et al.2012|Formal equivalence checking and design debugging
US8104000B2|2012-01-24|Method and apparatus for memory abstraction and for word level net list reduction and verification using same
US6836877B1|2004-12-28|Automatic synthesis script generation for synopsys design compiler
Piziali2007|Functional verification coverage measurement and analysis
US6295636B1|2001-09-25|RTL analysis for improved logic synthesis
US6292931B1|2001-09-18|RTL analysis tool
US9875333B1|2018-01-23|Comprehensive path based analysis process
US6378123B1|2002-04-23|Method of handling macro components in circuit design synthesis
Bhatnagar2002|Advanced ASIC chip synthesis
DE60314530T2|2008-02-14|Verfahren und system zum debuggen unter verwendung duplizierter logik
US7216318B1|2007-05-08|Method and system for false path analysis
US6205572B1|2001-03-20|Buffering tree analysis in mapped design
TWI468950B|2015-01-11|執行硬體模擬及驗證解決方案的方法與設備
US8181145B2|2012-05-15|Method and apparatus for generating a floorplan using a reduced netlist
同族专利:
公开号 | 公开日
CN201876881U|2011-06-22|
US8689192B2|2014-04-01|
TW201027365A|2010-07-16|
WO2010080180A1|2010-07-15|
TWI479335B|2015-04-01|
EP2377045A1|2011-10-19|
JP5016119B2|2012-09-05|
CN101884040A|2010-11-10|
KR20110115626A|2011-10-24|
CN101884040B|2013-06-05|
US20100179804A1|2010-07-15|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2011-12-14| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111213 |
2012-02-18| RD02| Notification of acceptance of power of attorney|Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20120217 |
2012-03-14| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120313 |
2012-05-10| TRDD| Decision of grant or rejection written|
2012-05-16| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120515 |
2012-05-17| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 |
2012-06-14| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120607 |
2012-06-15| R150| Certificate of patent or registration of utility model|Free format text: JAPANESE INTERMEDIATE CODE: R150 |
2012-06-15| FPAY| Renewal fee payment (event date is renewal date of database)|Free format text: PAYMENT UNTIL: 20150615 Year of fee payment: 3 |
2015-06-02| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2016-06-15| LAPS| Cancellation because of no payment of annual fees|
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]